[Docker]alpineベースのイメージのビルド時にglibcインストールのエラーが出た時の回避策
- t_o_dと申します。
- Dockerでalpineをベースにしたnodeイメージでその中にglibcをインストールした環境を利用しています。
- その環境を久々にビルドした際にエラーが出て構築できなかったため、その回避策を記録いたします。
環境
- mac OS Ventura 13.1
- Docker version 20.10.17-rd
修正前の内容
- 修正前のDockerfileの内容は以下です。
FROM node:18-alpine ENV GLIBC_VER=2.35-r0 WORKDIR /tmp RUN apk update --no-cache && \ apk add --no-cache git curl binutils && \ curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub && \ curl -sLO "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk" && \ curl -sLO "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk" && \ apk add --no-cache glibc-${GLIBC_VER}.apk glibc-bin-${GLIBC_VER}.apk && \ rm -rf /var/cache/apk/*
- 以前まではビルドが通っていたのですが、以下のようなエラーが出るようになりました。
$ docker build -t sample . (1/7) Installing glibc (2.35-r0) ERROR: glibc-2.35-r0: trying to overwrite etc/nsswitch.conf owned by alpine-baselayout-data-3.4.0-r0.
修正後の内容
- こちらのissueを参考に以下のようにapkでインストールする際のオプションとして
--force-overwrite
を追記しました。
FROM node:18-alpine ENV GLIBC_VER=2.35-r0 WORKDIR /tmp RUN apk update --no-cache && \ apk add --no-cache git curl binutils && \ curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub && \ curl -sLO "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk" && \ curl -sLO "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk" && \ apk add --force-overwrite --no-cache glibc-${GLIBC_VER}.apk glibc-bin-${GLIBC_VER}.apk && \ rm -rf /var/cache/apk/*
- 再度ビルドしてエラーが出ないことを確認します。
- ※WARNINGは出るがビルドとしては成功しています。
$ docker build -t sample . WARNING: glibc-2.35-r0 xxxxxxx Successfully built xxxxxxxxx Successfully tagged sample:latest
- 以上です。
まとめ
- 軽量なイメージとして利用が多いalpineですが、その中でglibcを使いたいケースは多いと思われるためひとまず回避できて安心しました。
- 現時点での回避策が今回の修正であるため、引き続きベストになりそうな方法を調査及び検討していきます。
参考
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。